home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / x11 / strategy / xshisen-.001 / xshisen-~ / xshisen-1.35 / nonstandard.C < prev    next >
C/C++ Source or Header  |  1996-01-07  |  1KB  |  65 lines

  1. #include "components.h"
  2.  
  3. #ifndef HAVE_STRDUP
  4. char *strdup(const char *s)
  5. {
  6.     char *p = malloc((strlen(s)+1)*sizeof(char));
  7.     if (p)
  8.         strcpy(p, s);
  9.     return p;
  10. }
  11. #endif /* HAVE_STRDUP */
  12.  
  13. #ifndef HAVE_STRSTR
  14. char *strstr(const char *s1, const char *s2)
  15. {
  16.     char *p;
  17.     int  l1 = strlen(s1);
  18.     int  l2 = strlen(s2);
  19.     if (l1 < l2)
  20.         return NULL;
  21.     for(p = s1; p <= s1+l1-l2; p++)
  22.         if (strncmp(p, s2, l2) == 0)
  23.             return p;
  24.     return NULL;
  25. }
  26. #endif /* HAVE_STRSTR */
  27.  
  28. #ifndef HAVE_STRNCASECMP
  29. # if STDC_HEADERS
  30. #  define Toupper(c) (toupper(c))
  31. # else /* STDC_HEADERS */
  32. #  define Toupper(c) ((c)&50)
  33. # endif /* STDC_HEADERS */
  34. int strncasecmp(const char *s1, const char *s2, size_t n)
  35. {
  36.     register int i;
  37.     for(i=0; i<n; i++) {
  38.         register char p1 = toupper(s1[i]), p2 = toupper(s2[i]);
  39.         if (p1 == '\0') {
  40.             if (p2 == '\0')
  41.                 return 0;
  42.             else
  43.                 return 1;
  44.         } else if (p2 == '\0') {
  45.             return -1;
  46.         } else if (p1 < p2) {
  47.             return 1;
  48.         } else if (p1 > p2) {
  49.             return -1;
  50.         }
  51.     }
  52.     return 0;
  53. }
  54. #endif /* HAVE_STRNCASECMP */
  55.  
  56. #ifndef HAVE_STRCASECMP
  57. #ifndef INT_MAX
  58. # define INT_MAX (sizeof(int)==4 ? 2147483647 : 32767)
  59. #endif
  60. int strcasecmp(const char *s1, const char *s2)
  61. {
  62.     return strncasecmp(s1, s2, INT_MAX);
  63. }
  64. #endif /* HAVE_STRCASECMP */
  65.